#ifndef SIPB2BSUBSCRIBE_HPP__
#define SIPB2BSUBSCRIBE_HPP__

//#include "SipB2BSession.hpp"
#include "SipGDServiceConfigure.hpp"
#include "SipSubscribeSession.hpp"

namespace wtsip{


class WTGD_SIPSRV_PUBLIC CSipSubscribeSelector :public CSipSubscribeHandle
{
public:

    CSipSubscribeSelector(CSipGDService& srv);

    virtual ~CSipSubscribeSelector();

    //virtual bool startCaller(SipMessage& calleeReq);

    virtual bool insertMap(SipMessage& callerReq, SipMessage& calleeReq);

    virtual bool insertMap(const resip::Data& callerId, const resip::Data& calleeId);

    virtual const resip::Data& getCalleeID(const resip::Data& callerId);

    virtual bool removeTidMap(const resip::Data& callerId);

protected:
    ///////////////////  Session Handles /////////////////////

    /*virtual bool onSuccess(SipMessage& msg, CSipSessionBase& sb);

    virtual bool onFailed(SipMessage& msg, CSipSessionBase& sb);

    virtual bool onTrying(SipMessage& msg, CSipSessionBase& sb);

    virtual bool onDestroy(CSipSessionBase& sb);

    virtual bool onSubscribe(SipMessage& msg, CSipSubscribeSession& subs);

    virtual bool onNotify(SipMessage& msg, CSipSubscribeSession& subs);*/

protected:

    CSipGDService& m_service;

    //std::map<resip::Data, CSipSubscribeSession*> m_subsMap;

    std::map<resip::Data, resip::Data> m_TransMap;

};


}//namespace

#endif

